package com.yuw.net.udpdemo;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;

public class ServerThread extends Thread {

	// 属性

	// 行为

	@Override
	public void run() {
		// 要求：服务器和客户端端口保持一致即可
		try {
			// 创建一个服务器端的datagramsocket对象
			DatagramSocket dsS = new DatagramSocket(9013);
			while (true) {
				/////////////// 服务端接收消息 开始/////////////////////
				// 字节数组，用于放置在packet数据包中接收客户端发送过来的消息内容
				byte[] buf = new byte[1024];
				// 创建一个用于接收客户端发送消息包的数据包【这个数据包是服务器端的】
				DatagramPacket dp = new DatagramPacket(buf, buf.length);
				// 接收网络流中的数据内容
				dsS.receive(dp);
				// 从接收的数据包中将字节数组取出进行业务逻辑处理
				// dp.getData();
				// 将字节数组转换字符串
				String strServerMsg = new String(buf, 0, dp.getLength());
				System.out.println("服务器接收消息：" + strServerMsg);

				/////////////// 服务端接收消息 结束/////////////////////

				/////////////// 服务器发送消息 开始/////////////////////
				// 发送消息内容
				String strSendMsg = "hello,client,this is server...";
				// 将消息内容转换为字节数组
				byte[] bufSend = strSendMsg.getBytes();
				// 创建一个消息数据包对象
				DatagramPacket dpSend = new DatagramPacket(bufSend, bufSend.length, dp.getSocketAddress());
				// 向服务器发送内容
				dsS.send(dpSend);
				
				System.out.println("服务端发送消息：" + strSendMsg);
				/////////////// 服务端发送消息 结束/////////////////////

			}

		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

}
